//=============================================================================
/**
 * @file	point_ring.h
 * @brief	おしくらまんじゅう:得点リング
 * @date	2008.03.13
 */
//=============================================================================

#ifndef	__POINT_RING_H__
#define	__POINT_RING_H__

#include "../../pokethlon.h"
#include "../pkthln_clact.h"
#include "../pkthln_act_def.h"

#define RING_CNT_MAX	(8)	//得点リング管理数
#define FIELD_TYPE_NONE	(0xf)

#define FIELD_COUNT_MAX	(6)		//フィールド展開数
#define RING_MAX	(4)

typedef enum{
	FIELD_LEVEL1,
	FIELD_LEVEL2,
	FIELD_LEVEL3,
	FIELD_LEVEL4,
}FIELD_LEVEL;

typedef struct RING_PRM_tag
{
	int Range;
	u16 X;
	u16 Y;
}RING_PRM;

typedef struct POINT_RING_CNT_tag *PT_RING_CNT_PTR;

extern PT_RING_CNT_PTR PtRing_Init(const int inHeapID);
extern void PtRing_End(PT_RING_CNT_PTR cnt_ptr);
extern void PtRing_SetRingAct(PT_RING_CNT_PTR cnt_ptr, PKTHLN_CLACT_CNT_PTR ActCntPtr);
extern u8 PtRing_GetNextFieldType(const u8 inNowType, const FIELD_LEVEL inLevel);
extern u8 PtRing_GetPoint(const u8 inNowType, const u16 inX, const u16 inY, u8 *outRingNo);
extern void PtRing_MakeField(PT_RING_CNT_PTR cnt_ptr, const u8 inType);
extern void PtRing_ClearData(PT_RING_CNT_PTR cnt_ptr, const u8 inType);
extern int PtRing_GetRingData(const u8 inNowType, RING_PRM *outList);
extern u8 PtRing_ChangeToNo(const u8 inPoint);

#endif	//__POINT_RING_H__